<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        // var proxy = new Proxy({}, {
        //     get: function(target, propKey) {
        //         return 35;
        //     }
        // });
        // console.log(proxy.time);  // 35
        // console.log(proxy.name);  // 35
        // console.log(proxy.title);  // 35

        // var target = {};
        // var handler = {};
        // var proxy = new Proxy(target, handler);
        // proxy.b = '哈哈';
        // console.log(target.b);  // 哈哈

        // var handler = {
        //     get: function(target, name) {
        //         if (name === 'prototype') {
        //             return Object.prototype;
        //         }
        //         return 'Hello, ' + name;
        //     },
            
        //     apply: function(target, thisBinding, args) {
        //         return args[0];
        //     },

        //     construct: function(target, args) {
        //         return {value: args[1]};
        //     }
        // };

        // var fproxy = new Proxy(function(x, y) {
        //     reurn (x + y);
        // }, handler);

        // fproxy(1, 2)  // 1
        // new fproxy(1, 2)  // {value: 2}
        // fproxy.prototype === Object.prototype  // true
        // fproxy.foo === "Hello, foo"  // true


        // var person = {
        //     name: "张三"
        // };
        // var proxy = new Proxy(person, {
        //     get: function(target, propKey) {
        //         if (propKey in target) {
        //             return target[propKey];
        //         } else {
        //             throw new ReferenceError("Prop name \"" + propKey + "\" does not exist.");
        //         }
        //     }
        // });
        // console.log(proxy.name);  // 张三
        // console.log(proxy.age);  // Uncaught ReferenceError: Prop name "age" does not exist.


       var handler = {
           has (target, key) {
               if (key[0] === '_') {
                   return false;
               }
               return key in target;
           }
       };
       var target = {_prop: 'foo', prop: 'foo'};
       var proxy = new Proxy(target, handler);
       console.log('_prop' in proxy);  // false
    </script>
</body>
</html>